package com.mmy.controller.visa;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.mmy.domain.constzone.TConstZone;
import com.mmy.domain.sys.TSysUser;
import com.mmy.domain.visa.TVisaBase;
import com.mmy.domain.visa.VVisaBase;
import com.mmy.service.impl.constzone.ConstZoneServiceImpl;
import com.mmy.service.impl.visa.TVisaStuffServiceImpl;
import com.mmy.service.impl.visa.VisaBaseServiceImpl;
import com.mmy.service.impl.visa.VisaOrderServiceImpl;

/**
 * 类的介绍：签证基础信息
 *
 * @author hanxl
 * @date 2020-07-23
 * @version 1.0
 */
@Controller
public class VisaBaseController {
	@Autowired
	VisaBaseServiceImpl visaBaseServiceImpl;
	@Autowired
	ConstZoneServiceImpl constZoneServiceImpl;
	@Autowired
	VisaOrderServiceImpl visaOrderServiceImpl;
	@Autowired
	TVisaStuffServiceImpl tVisaStuffServiceImpl;

	/**
	 * 函数功能说明： 后台进入签证首页
	 *
	 * @param 参数说明 tVisaBase
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.07.29
	 */
	@RequestMapping(value = "/backvisabaseindex")
	public String FindAll(Model model, HttpSession session) {
		// 查询所有区域 洲
		List<TConstZone> lstZoneContinent = constZoneServiceImpl.findAllContinent();
		model.addAttribute("lstZoneContinent", lstZoneContinent);
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		List<VVisaBase> lstVisaBase = visaBaseServiceImpl.findVisaBase(sessionSysUser);
		model.addAttribute("lstVisaBase", lstVisaBase);
		return "webbackground/visamanagement/VisaBaseIndex";
	}

	/**
	 * 函数功能说明： 异步--签证列表数据
	 * 
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping("/backvisabasejson")
	@ResponseBody
	public String backVisaBaseJson(HttpServletRequest request, HttpSession session, Model model) {

		// 接收的分页信息处理
		int page = Integer.parseInt(request.getParameter("page"));
		int rows = Integer.parseInt(request.getParameter("rows"));
		int startIndex = (page - 1) * rows;
		int count = rows;
		// 搜索条件
		String strVisaName = request.getParameter("visaName");
		String strZoneID = request.getParameter("zoneID");
		String strType = request.getParameter("type");
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");

		// 表格数据
		List<VVisaBase> lstVisaBase = visaBaseServiceImpl.findByOrgID(sessionSysUser, strVisaName, strZoneID, strType,
				startIndex, count);
		model.addAttribute("lstVisaBase", lstVisaBase);
		// 数据总数量
		int total = visaBaseServiceImpl.queryBaseCount(sessionSysUser, strVisaName, strZoneID, strType);
		Map<String, Object> ret = new HashMap<String, Object>();
		ret.put("rows", lstVisaBase);
		ret.put("total", total);
		return JSONObject.toJSONString(ret);
	}

	/**
	 * 函数功能说明： 新建签证 页面
	 *
	 * @param 参数说明 tVisaBase
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.03.17
	 */
	@RequestMapping(value = "/backtocreatevisabase")
	public String backToCreateVisaBase(Model model) {
		// 查询所有区域 洲
		List<TConstZone> lstZoneContinent = constZoneServiceImpl.findAllContinents();
		model.addAttribute("lstZoneContinent", lstZoneContinent);
		return "webbackground/visamanagement/CreateVisaBase";
	}

	/**
	 * 函数功能说明： 检查创建签证是否存在
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人hanxl 整理
	 * @date 创建日期 2020.03.17
	 * 
	 */
	@RequestMapping(value = "/isexistvisabase")
	@ResponseBody
	public Integer isExistVisaBase(HttpServletRequest request) {
		int size = visaBaseServiceImpl.findByZoneID(request.getParameter("iZoneID"), request.getParameter("bType"))
				.size();
		if (size == 0) {
			return 0;
		} else {
			return size;
		}
	}

	/**
	 * 函数功能说明： 新建签证 提交
	 *
	 * @param 参数说明 tVisaBase
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.03.17
	 */
	@RequestMapping(value = "/backsavecreatevisabase")
	public String backSaveCreateVisaBase(TVisaBase tVisaBase, HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		visaBaseServiceImpl.createVisaBase(tVisaBase, sessionSysUser);
		return "redirect:backvisabaseindex";

	}

	/**
	 * 函数功能说明： 修改签证进入页面
	 *
	 * @param 参数说明 tVisaBase
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.07.29
	 */

	@RequestMapping("/backtoupdatevisabase")
	public String backToupdateVisaBase(HttpServletRequest request, Model model) {
		int iVisaID = Integer.parseInt(request.getParameter("iVisaID"));

		VVisaBase dbVisaBase = visaBaseServiceImpl.findByVisaID(iVisaID);
		model.addAttribute("dbVisaBase", dbVisaBase);
		// 查询所有的洲
		List<TConstZone> lstZoneContinent = constZoneServiceImpl.findAllContinent();
		model.addAttribute("lstZoneContinent", lstZoneContinent);
		// 获取机场所在的洲
		int strContinentID = constZoneServiceImpl.findContinent(dbVisaBase.getZoneID()).getZoneID();
		model.addAttribute("strContinentID", strContinentID);
		// 查询机场所在洲 所有的国家
		List<TConstZone> lstZoneCountry = constZoneServiceImpl.findCountriess(dbVisaBase.getZoneID());
		model.addAttribute("lstZoneCountry", lstZoneCountry);

		return "webbackground/visamanagement/UpdateVisaBase";

	}

	/**
	 * 函数功能说明： 修改签证提交
	 *
	 * @param 参数说明 tVisaBase
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 hanxl
	 * @date 创建日期 2020.07.29
	 */

	@RequestMapping(value = "/bacsaveupdatevisabase")
	public String backSaveUpdateVisaBase(TVisaBase tVisaBase, HttpSession session) throws Exception {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		visaBaseServiceImpl.updateVisaBase(tVisaBase, sessionSysUser);
		return "redirect:backvisabaseindex";
	}
}
